package com.zjitc.utils.redis;

import com.zjitc.model.*;

import java.util.List;
import java.util.Set;

/**
 * Create by IntelliJ IDEA
 *
 * @author: jsonor
 * @date-Time: 2018/4/12 14:17
 * @description:
 */
public interface RedisCommand {

    /**
     * 缓存中是否存在某个键
     *
     * @param key
     * @return
     */
    boolean exists(String key);

    /**
     * hashSet
     * 获取缓存中某个redisKey中filed键值对应的json字符串
     *
     * @param redisKey
     * @param filed
     * @return
     */
    String getOneById(String redisKey, String filed);

    /**
     * 删除对应的字段
     *
     * @param redisKey
     * @param filed
     */
    void deleteById(String redisKey, String filed);

    /**
     * 修改，，用于更新缓存中的信息
     *
     * @param redisKey
     * @param filed
     * @param value
     */
    void alertById(String redisKey, String filed, String value);

    /**
     * 对应的字段，添加缓存信息
     *
     * @param redisKey
     * @param filed
     * @param value
     */
    void addCathc(String redisKey, String filed, String value);

    /**
     * 判断redisKey对应的哈希中key是否存在
     *
     * @param redisKey
     * @param filed
     * @return
     */
    boolean hexists(String redisKey, String filed);

    /**
     * 获取缓存中所有的用户
     *
     * @return
     */
    List<User> allUsers();

    /**
     * 获取缓存中所有的商品
     *
     * @return
     */
    List<Product> allProducts();

    /**
     * 获取缓存中所有的订单
     *
     * @return
     */
    List<Order> allOrders();

    /**
     * 获取缓存中所有的订单详情
     *
     * @return
     */
    List<OrderItem> allItems();

    /**
     * 获取缓存中所有的分类
     *
     * @return
     */
    List<Category> allCategories();

    /**
     * 有序集合，按照传入的参数进行获取缓存内容
     *
     * @param key
     * @param start
     * @param end
     * @return
     */
    Set<String> zrange(String key, int start, int end);

    /**
     * 获取有序集合的成员数
     *
     * @param pageCidKey
     * @return
     */
    Long zcard(String pageCidKey);

    /**
     * 删除某个缓存的key
     *
     * @param key
     */
    void del(String key);

    /**
     * 获取哈希表中所有值
     *
     * @param key
     * @return
     */
    List<String> hvals(String key);

    /**
     * 添加一个有序集合，目的是进行缓存分页
     *
     * @param key
     * @param score
     * @param value
     */
    void zadd(String key, double score, String value);

    /**
     * SADD key member1 [member2]  向集合添加一个或多个成员
     *
     * @param key
     * @param value
     */
    void sadd(String key, String value);

    /**
     * 命令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。
     *
     * @param key
     * @return
     */
    Set<String> smembers(String key);

    /**
     * 获取redis中的所有的键的名字
     *
     * @param s
     * @return
     */
    Set<String> keys(String s);

}
